from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm

class RegistrationForm(UserCreationForm):
    email = forms.EmailField(required=True)

    class Meta:
        model = User
        fields = ('username', 'email', 'password1', 'password2')

        def save(self, commit=True):
            user = super(UserCreationForm, self).save(commit=False)
            user.email = self.cleaned_data['email']
            if User.objects.filter(email=user.email).exists():
                raise forms.ValidationError(self.error_messages['duplicate_email'],
                                            code='duplicate_email',
                )

            if commit:
                user.save()

            return user
